home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / Palettes / KeyDownBrowser / KeyDownBrowserInspector.m < prev    next >
Text File  |  1995-06-12  |  7KB  |  259 lines

  1. //----------------------------------------------------------------------------------------------------
  2. //
  3. //    KeyDownBrowserInspector
  4. //
  5. //    Inherits From:        IBInspector
  6. //
  7. //    Declared In:        KeyDownBrowserInspector.h
  8. //
  9. //    Disclaimer
  10. //
  11. //        You may freely copy, distribute and reuse this software and its
  12. //        associated documentation. I disclaim any warranty of any kind, 
  13. //        expressed or implied, as to its fitness for any particular use.
  14. //
  15. //----------------------------------------------------------------------------------------------------
  16. #import "KeyDownBrowserInspector.h"
  17. #import "KeyDownBrowser.h"
  18. #import <appkit/appkit.h>
  19.  
  20.  
  21. @implementation KeyDownBrowserInspector
  22.  
  23. //----------------------------------------------------------------------------------------------------
  24. //    Initialization and Freeing
  25. //----------------------------------------------------------------------------------------------------
  26. - init
  27. {
  28.         char     path[MAXPATHLEN+1];
  29.         id         bundle;
  30.         
  31.         [super init];
  32.         if (! (bundle = [NXBundle bundleForClass:[KeyDownBrowserInspector class]])) return nil;
  33.         if (! ([bundle getPath: path forResource:"KeyDownBrowserInspector" ofType:"nib"])) return nil;
  34.            [NXApp loadNibFile:path owner:self withNames:NO ]; 
  35.         return self;
  36. }
  37.  
  38.  
  39. //----------------------------------------------------------------------------------------------------
  40. //    IB Inspector Methods
  41. //----------------------------------------------------------------------------------------------------
  42. - ok:sender
  43. {
  44.     if (sender == horizontalScrolling)
  45.         [self setHorizontalScrolling];
  46.     else if (sender == verticalScrolling)
  47.         [self setVerticalScrolling];
  48.     else if (sender == options)
  49.         [self setOptions];
  50.     else if (sender == caseSensitiveSearch)
  51.         [self setCaseSensitiveSearch];
  52.     else if (sender == inputTimeOut)
  53.         [self setInputTimeOut];
  54.  
  55.     [[NXApp activeDocument] touch];
  56.         return [super ok:sender];
  57. }
  58.  
  59.  
  60. - revert:sender
  61. {
  62.     [self revertHorizontalScrolling];
  63.     [self revertVerticalScrolling];
  64.     [self revertOptions];
  65.     [self revertCaseSensitiveSearch];
  66.     [self revertInputTimeOut];
  67.     return [super revert: sender];
  68. }
  69.  
  70.  
  71. - (BOOL)wantsButtons
  72. {
  73.         return NO;
  74. }
  75.  
  76.  
  77. //----------------------------------------------------------------------------------------------------
  78. //    Reverting Attributes
  79. //----------------------------------------------------------------------------------------------------
  80. - revertHorizontalScrolling
  81. {
  82.     [horizontalScrolling clearSelectedCell];
  83.     if ([object isHorizontalScrollerEnabled])
  84.         {
  85.         [horizontalScrolling setState: 0  at: 0 :0];
  86.         [horizontalScrolling setState: 1  at: 1 :0];
  87.         [horizontalScrolling setState: 0  at: 2 :0];
  88.         [[verticalScrolling findCellWithTag: 1] setEnabled: NO];
  89.         }
  90.     else if ([object areHorizontalScrollButtonsEnabled])
  91.         {
  92.         [horizontalScrolling setState: 0  at: 0 :0];
  93.         [horizontalScrolling setState: 0  at: 1 :0];
  94.         [horizontalScrolling setState: 1  at: 2 :0];
  95.         [[verticalScrolling findCellWithTag: 1] setEnabled: YES];
  96.         }
  97.     else
  98.         {
  99.         [horizontalScrolling setState: 1  at: 0 :0];
  100.         [horizontalScrolling setState: 0  at: 1 :0];
  101.         [horizontalScrolling setState: 0  at: 2 :0];
  102.         [[verticalScrolling findCellWithTag: 1] setEnabled: YES];
  103.         }
  104.  
  105.     return self;
  106. }
  107.  
  108.  
  109. - revertVerticalScrolling
  110. {
  111.     NXRect    browserFrame;
  112.     NXRect    columnFrame;
  113.     NXRect    titleFrame;
  114.     float        titleFudgeFactor = 0.0;
  115.  
  116.     [verticalScrolling clearSelectedCell];
  117.  
  118.     [object getFrame: &browserFrame];
  119.     [object getFrame: &columnFrame  ofColumn: 0];
  120.     [object getTitleFrame: &titleFrame  ofColumn: 0];
  121.     if ( NX_HEIGHT(&titleFrame) > 1.0 )
  122.         titleFudgeFactor = 2.0;
  123.  
  124.     if ([object isHorizontalScrollerEnabled])
  125.         {
  126.         [verticalScrolling setState: 1  at: 0 :0];
  127.         [verticalScrolling setState: 0  at: 1 :0];
  128.         [[horizontalScrolling findCellWithTag: 1] setEnabled: YES];
  129.         }
  130.     else if ( (NX_HEIGHT(&columnFrame) + NX_HEIGHT(&titleFrame) + titleFudgeFactor) ==             NX_HEIGHT(&browserFrame) )
  131.         {
  132.         [verticalScrolling setState: 1  at: 0 :0];
  133.         [verticalScrolling setState: 0  at: 1 :0];
  134.         [[horizontalScrolling findCellWithTag: 1] setEnabled: YES];
  135.         }
  136.     else
  137.         {
  138.         [verticalScrolling setState: 0  at: 0 :0];
  139.         [verticalScrolling setState: 1  at: 1 :0];
  140.         [[horizontalScrolling findCellWithTag: 1] setEnabled: NO];
  141.         }
  142.  
  143.     return self;
  144. }
  145.  
  146.  
  147. - revertOptions
  148. {
  149.     [options setState: [object isMultipleSelectionEnabled] at: 0 :0];
  150.     [options setState: [object isEmptySelectionEnabled] at: 1 :0];
  151.     [options setState: [object isBranchSelectionEnabled] at: 2 :0];
  152.     [options setState: [object columnsAreSeparated] at: 3 :0];
  153.     [options setState: [object isTitled] at: 4 :0];
  154.     [[options findCellWithTag: 3] setEnabled: NO];
  155.     return self;
  156. }
  157.  
  158.  
  159. - revertCaseSensitiveSearch
  160. {
  161.     [caseSensitiveSearch setState: [object wantsCaseSensitiveSearch]];
  162.     return self;
  163. }
  164.  
  165.  
  166. - revertInputTimeOut
  167. {
  168.     [inputTimeOut setFloatValue: [object inputTimeOut]];
  169.     return self;
  170. }
  171.  
  172.  
  173. //----------------------------------------------------------------------------------------------------
  174. //    Setting Attributes
  175. //----------------------------------------------------------------------------------------------------
  176. - setHorizontalScrolling
  177. {
  178.     switch ([[horizontalScrolling selectedCell] tag])
  179.         {
  180.         case 0:
  181.             [object setHorizontalScrollButtonsEnabled: NO];
  182.             [object setHorizontalScrollerEnabled: NO];
  183.             [[verticalScrolling cellAt: 1 :0] setEnabled: YES];
  184.             break;
  185.         case 2:
  186.             [object setHorizontalScrollButtonsEnabled: YES];
  187.             [object setHorizontalScrollerEnabled: NO];
  188.             [[verticalScrolling cellAt: 1 :0] setEnabled: YES];
  189.             break;
  190.         case 1:
  191.         default:
  192.             [object setHorizontalScrollerEnabled: YES];
  193.             [object setHorizontalScrollButtonsEnabled: NO];
  194.             [[verticalScrolling cellAt: 1 :0] setEnabled: NO];
  195.             break;
  196.         }
  197.     
  198.     return self;
  199. }
  200.  
  201.         
  202. - setVerticalScrolling
  203. {
  204.     switch ([[verticalScrolling selectedCell] tag])
  205.         {
  206.         case 1:
  207.             [object useScrollButtons: YES];
  208.             [object useScrollBars: NO];
  209.             [[horizontalScrolling cellAt: 1 :0] setEnabled: NO];
  210.             break;
  211.         case 0:
  212.         default:
  213.             [object useScrollBars: YES];
  214.             [object useScrollButtons: NO];
  215.             [[horizontalScrolling cellAt: 1 :0] setEnabled: YES];
  216.             break;
  217.         }
  218.     
  219.     return self;
  220. }
  221.  
  222.     
  223. - setOptions
  224. {
  225.     [object setMultipleSelectionEnabled: ([[options cellAt: 0 : 0] state] ? YES : NO)];
  226.     [object setEmptySelectionEnabled: ([[options cellAt: 1 : 0] state] ? YES : NO)];
  227.     [object setBranchSelectionEnabled: ([[options cellAt: 2 : 0] state] ? YES : NO)];
  228.     [object separateColumns: ([[options cellAt: 3 : 0] state] ? YES : NO)];
  229.  
  230.     if ([[options cellAt: 4 : 0] state])
  231.         {
  232.         [object setTitled: YES];
  233.         [[options cellAt: 3 :0] setState: 1];
  234.         [[options cellAt: 3 :0] setEnabled: NO];
  235.         }
  236.     else
  237.         {
  238.         [object setTitled: NO];
  239.         [[options cellAt: 3 :0] setEnabled: YES];
  240.         }
  241.         
  242.     return self;
  243. }
  244.  
  245.  
  246. - setCaseSensitiveSearch
  247. {
  248.     [object wantsCaseSensitiveSearch: [caseSensitiveSearch state]];
  249.     return self;
  250. }
  251.  
  252. - setInputTimeOut
  253. {
  254.     [object inputTimeOut: [inputTimeOut floatValue]];
  255.     return self;
  256. }
  257.  
  258.  
  259. @end